// exports.ExcelLoader = void 0;
// var $bundleConfig = require("./BundleConfig");
// var $gameConfig = require("./GameConfig");
// var $logManager = require("./LogManager");
// var $resLoader = require("./ResLoader");
// var $excelData = require("./ExcelData");
// var u = (function () {
//     function e() {}
//     e.loadAll = function () {
//         var e = this;
//         return new Promise(function (t) {
//             e._allFiles = JSON.parse(JSON.stringify($excelData.ExcelData.allFiles));
//             e._totalCount = e._allFiles.length;
//             var o = setInterval(function () {
//                 return __awaiter(e, void 0, void 0, function () {
//                     var e;
//                     return __generator(this, function () {
//                         if (this._loadedCount >= this._totalCount) {
//                             clearInterval(o);
//                             $logManager.LogMgr.debug("load excel done", this._totalCount);
//                             t(!0);
//                         } else {
//                             if ((e = this._allFiles.pop())) {
//                                 this.load(e);
//                             }
//                         }
//                         return [2];
//                     });
//                 });
//             }, 1);
//         });
//     };
//     e.load = function (e) {
//         var t = this;
//         // var o = $gameConfig.default.appConfig.RemoteUrl;
//         // if (o) {
//         //     var n = o + $gameConfig.default.appConfig.Version + "/excel/" + e + ".json?" + new Date().getTime();
//         //     $resLoader.default
//         //         .loadRemote(n, {
//         //             ext: ".json"
//         //         })
//         //         .then(function (o) {
//         //             ++t._loadedCount;
//         //             if (o) {
//         //                 $excelData.ExcelData.loadConfig(e, o);
//         //             } else {
//         //                 console.error("load excel " + e + " error");
//         //             }
//         //             o.decRef();
//         //         });
//         // } else {
//         $resLoader.default.loadRes($bundleConfig.BundleNames.Excel, e, cc.JsonAsset).then(function (o) {
//             ++t._loadedCount;
//             if (o) {
//                 $excelData.ExcelData.loadConfig(e, o);
//             } else {
//                 console.error("load excel " + e + " error");
//             }
//             o.decRef();
//         });
//         // }
//     };

//     e._allFiles = [];
//     e._totalCount = 0;
//     e._loadedCount = 0;
//     return e;
// })();
// exports.ExcelLoader = u;



// import { BundleNames } from "./BundleConfig";
// import GameConfig from "./GameConfig";
// import { LogMgr } from "./LogManager";
// import ResLoader from "./ResLoader";
// import { ExcelData } from "./ExcelData";

// /**
//  * ExcelLoader 类
//  * 建议名称：ExcelLoader
//  */
// export class ExcelLoader {
//     private static _allFiles: string[] = [];
//     private static _totalCount: number = 0;
//     private static _loadedCount: number = 0;

//     /**
//      * 加载所有 Excel 文件
//      * @returns {Promise<boolean>} 返回一个 Promise，表示加载是否完成
//      * 建议方法名：loadAllExcelFiles
//      */
//     public static loadAll(): Promise<boolean> {
//         return new Promise((resolve) => {
//             this._allFiles = JSON.parse(JSON.stringify(ExcelData.allFiles));
//             this._totalCount = this._allFiles.length;
//             const intervalId = setInterval(async () => {
//                 if (this._loadedCount >= this._totalCount) {
//                     clearInterval(intervalId);
//                     LogMgr.debug("load excel done", this._totalCount);
//                     resolve(true);
//                 } else {
//                     const file = this._allFiles.pop();
//                     if (file) {
//                         this.load(file);
//                     }
//                 }
//             }, 1);
//         });
//     }

//     /**
//      * 加载单个 Excel 文件
//      * @param {string} fileName - 要加载的 Excel 文件名
//      * 建议方法名：loadSingleExcelFile
//      */
//     public static load(fileName: string): void {
//         ResLoader.loadRes(BundleNames.Excel, fileName, cc.JsonAsset).then((asset) => {
//             this._loadedCount++;
//             if (asset) {
//                 ExcelData.loadConfig(fileName, asset);
//             } else {
//                 console.error(`load excel ${fileName} error`);
//             }
//             asset.decRef();
//         });
//     }
// }

import { BundleNames } from "./BundleConfig";
import { LogMgr } from "./LogManager";
import ResLoader from "./ResLoader";
import { ExcelData } from "./ExcelData";

/**
 * ExcelLoader 类
 * 建议名称：ExcelLoader
 */
export class ExcelLoader {
    private static _allFiles: string[] = [];
    private static _totalCount: number = 0;
    private static _loadedCount: number = 0;

    /**
     * 加载所有 Excel 文件
     * @returns {Promise<boolean>} 返回一个 Promise，表示加载是否完成
     * 建议方法名：loadAllExcelFiles
     */
    public static loadAllExcelFiles(): Promise<boolean> {
        return new Promise((resolve) => {
            this._allFiles = [...ExcelData.allFiles];
            this._totalCount = this._allFiles.length;
            const intervalId = setInterval(async () => {
                if (this._loadedCount >= this._totalCount) {
                    clearInterval(intervalId);
                    LogMgr.debug("load excel done", this._totalCount);
                    resolve(true);
                } else {
                    const file = this._allFiles.pop();
                    if (file) {
                        this.loadSingleExcelFile(file);
                    }
                }
            }, 1);
        });
    }

    /**
     * 加载单个 Excel 文件
     * @param {string} fileName - 要加载的 Excel 文件名
     * 建议方法名：loadSingleExcelFile
     */
    public static loadSingleExcelFile(fileName: string): void {
        ResLoader.loadRes(BundleNames.Excel, fileName, cc.JsonAsset).then((jsonAsset) => {
            this._loadedCount++;
            if (jsonAsset) {
                ExcelData.loadConfig(fileName, jsonAsset);
            } else {
                console.error(`load excel ${fileName} error`);
            }
            jsonAsset.decRef();
        });
    }
}